from django.views import View
# 导入返回响应
from SaaSDevelTool.data_return_response import create_response
# 导入错误信息装饰器
from SaaSDevelTool.data_return_response import error_message_detection
# 获取数据库连接
from SaaSDevelTool.data_mysql_data import db
"""
用户修改
"""


class SaaSDevelLoginModelUpdate(View):
    @error_message_detection
    def post(self, request):
        # 获取用户ID
        login_id = int(request.POST.get("login_id"))
        # 获取用户名称
        login_name = request.POST.get("login_name")
        # 获取用户备注
        login_remark = request.POST.get("login_remark")

        # 判断参数是否传递完整
        if not all([login_id, login_name, login_remark]):
            return create_response(code=400, msg="修改失败，用户名称和备注信息为必传参数。")

        # 判断用户信息格式
        if not 4 > len(login_name) and len(login_name) > 30:
            return create_response(code=400, msg="修改失败，用户信息长度不得小于4或大于30。")

        # 判断用户备注信息格式
        if len(login_remark) > 100:
            return create_response(code=400, msg="修改失败，用户备注信息长度不得大于100。")

        # 判断用户是否已存在
        query_sum_login_table_sql = """
                    SELECT 
                        login_id,
                        login_name,
                        login_remark 
                    FROM 
                        db_saas_center.sum_login_table 
                    WHERE 
                        login_id = '{}';
                    """.format(login_id)
        query_sum_login_table_data = db.findOne(query_sum_login_table_sql)

        # 如果用户存在的情况下
        if not query_sum_login_table_data:
            return create_response(
                code=400, msg="修改失败，当前用户【{}】未注册。"
                .format("**" + login_name))

        # 拼接sql语句进行修改
        create_sum_login_table_sql = """
                UPDATE 
                    db_saas_center.sum_login_table 
                SET 
                    login_name = '{}',
                    login_remark = '{}' 
                WHERE 
                    login_id = '{}'
                ;""".format(query_sum_login_table_data['login_name'],
                            query_sum_login_table_data['login_remark'],
                            query_sum_login_table_data['login_id'])
        # 执行修改语句
        db.update1(create_sum_login_table_sql)
        # 返回对应的数据
        return create_response(code=200, msg="用户修改成功！")
